package ebcs.plat.icop.connect;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/*
 * 公共数据总线数据模型.
 * 目前只支持基本类哦,准确的说是String.
 * 数据信息详细见最下面的注释.
 * 其中变量名称需大写(get,set方法需要)
 * */
@XmlRootElement(name="Header")
public class ICOPReqHeaderV1
{
//	public String __errMsg = "";
	
	/* 交易码 */
	private String serviceCode;
	private String channelId;				//R 渠道号
	private String externalReference;		//R 流水
	private String uuid;					//设备UUID
	private String originalChannelId;
	private String originalReference;
	private String requestTime;				//R
	private String tradeDate;				//R
	private String version;			//R 默认1.0
	private String requestBranchCode;
	private String requestOperatorId;
	private String requestOperatorType;
	private String authorizerID;
	private String termType;
	private String termNo;
	private String requestType;
	private String encrypt;

	@XmlElement(name="ServiceCode")
	public String getServiceCode() {
		return serviceCode;
	}

	public void setServiceCode(String serviceCode) {
		this.serviceCode = serviceCode;
	}

	@XmlElement(name="ChannelId")
	public String getChannelId() {
		return channelId;
	}

	public void setChannelId(String channelId) {
		this.channelId = channelId;
	}

	@XmlElement(name="ExternalReference")
	public String getExternalReference() {
		return externalReference;
	}

	public void setExternalReference(String externalReference) {
		this.externalReference = externalReference;
	}

	@XmlElement(name="Uuid")
	public String getUuid() {
		return uuid;
	}

	public void setUuid(String uuid) {
		this.uuid = uuid;
	}

	@XmlElement(name="OriginalChannelId")
	public String getOriginalChannelId() {
		return originalChannelId;
	}

	public void setOriginalChannelId(String originalChannelId) {
		this.originalChannelId = originalChannelId;
	}

	@XmlElement(name="OriginalReference")
	public String getOriginalReference() {
		return originalReference;
	}

	public void setOriginalReference(String originalReference) {
		this.originalReference = originalReference;
	}

	@XmlElement(name="RequestTime")
	public String getRequestTime() {
		return requestTime;
	}

	public void setRequestTime(String requestTime) {
		this.requestTime = requestTime;
	}

	@XmlElement(name="TradeDate")
	public String getTradeDate() {
		return tradeDate;
	}

	public void setTradeDate(String tradeDate) {
		this.tradeDate = tradeDate;
	}

	@XmlElement(name="Version")
	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version;
	}

	@XmlElement(name="RequestBranchCode")
	public String getRequestBranchCode() {
		return requestBranchCode;
	}

	public void setRequestBranchCode(String requestBranchCode) {
		this.requestBranchCode = requestBranchCode;
	}

	@XmlElement(name="RequestOperatorId")
	public String getRequestOperatorId() {
		return requestOperatorId;
	}

	public void setRequestOperatorId(String requestOperatorId) {
		this.requestOperatorId = requestOperatorId;
	}

	@XmlElement(name="RequestOperatorType")
	public String getRequestOperatorType() {
		return requestOperatorType;
	}

	public void setRequestOperatorType(String requestOperatorType) {
		this.requestOperatorType = requestOperatorType;
	}

	@XmlElement(name="AuthorizerID")
	public String getAuthorizerID() {
		return authorizerID;
	}

	public void setAuthorizerID(String authorizerID) {
		this.authorizerID = authorizerID;
	}

	@XmlElement(name="TermType")
	public String getTermType() {
		return termType;
	}

	public void setTermType(String termType) {
		this.termType = termType;
	}

	@XmlElement(name="TermNo")
	public String getTermNo() {
		return termNo;
	}

	public void setTermNo(String termNo) {
		this.termNo = termNo;
	}

	@XmlElement(name="RequestType")
	public String getRequestType() {
		return requestType;
	}

	public void setRequestType(String requestType) {
		this.requestType = requestType;
	}

	@XmlElement(name="Encrypt")
	public String getEncrypt() {
		return encrypt;
	}

	public void setEncrypt(String encrypt) {
		this.encrypt = encrypt;
	}
}

/**************
 *服务编码	ServiceCode	1	F10	ICOP对每一个标准服务都有一个唯一的服务编码，外围系统在访问时需要提供。
渠道号	ChannelId	1	V10	指接入系统的渠道号，渠道号由ICOP统一维护。
渠道流水号	ExternalReference	1	V36	技术流水号，由渠道号代表的系统来保证在该系统内的唯一性，用来帮助服务提供者堵重。
原渠道号	OriginalChannelId	0	V10	原渠道号
原渠道流水号	OriginalReference	0	V36	原渠道流水号
请求时间	RequestTime	1	F17	指接入系统调用本服务时的机器时间，格式为YYYYMMDDHHmmssSSS。
交易日期	TradeDate	1	F8	指该笔业务的发生日期，若无交易日期信息，则填入请求日期相同的值。YYYYMMDD 
报文头版本	Version	1	F3	用来表示当前服务使用的报文头版本，版本由ICOP发布。若无特殊要求，默认填写1.0。
请求机构代号	RequestBranchCode	0	V9	指接入系统调用本服务时使用的机构代号。
请求柜员代号	RequestOperatorId	0	V20	指接入系统调用本服务时使用的服务提供方柜员代号，根据业务场景填写，可能是实际柜员代号，也可能是虚拟柜员代号。
请求柜员类型	RequestOperatorType	0	F1	指请求柜员的类型，0-实柜员，1-虚柜员。
授权柜员号	AuthorizerID	0	V20	柜面交易等需要授权的交易，需要上送授权柜员号
终端类型	TermType	0	V5	指面向客户服务的终端类型，如自助取款机、多媒体查询机等。若交易非通过终端发起，则填写默认值“00000”。
终端号	TermNo	0	V10	指面向客户服务终端的编号，需要保证终端类型+终端号为全行唯一。若交易非通过终端发起，则填写默认值“0000000000”。
请求类型	RequestType	0	F1	"取值：
0：正常
1：测试
2：重发"
加密标志	Encrypt	0	F1	"0:明文
1:密文"
响应报文	Response	1		
返回编码	ReturnCode	1	V20	服务方应答码
服务提供方ID	ProviderChannelId	1	F10	服务提供方渠道号。
应答时间	ResponseTime	0	F17	服务提供方应答时间
				格式YYYYMMDDHHmmssSSS
返回消息	ReturnMessage	0	V1024	ICOP返回的提示信息或者异常信息
服务提供方流水号	ProviderReference	0	V36	服务提供接口流水号
服务提供方工作日	ProviderWorkingDate	0	V8	服务提供方工作日

 *****************/
